perm filename ITALL.MF[1,3]2 blob
sn#520987 filedate 1980-07-08 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00028 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 % This lower-case italic alphabet was prepared by D. E. Knuth in December, 1979,
C00004 00003 "Italic letter a"
C00005 00004 "Italic letter b"
C00006 00005 "Italic letter c"
C00007 00006 "Italic letter d"
C00008 00007 "Italic letter e"
C00009 00008 "Italic letter f"
C00011 00009 "Italic letter g"
C00012 00010 "Italic letter h"
C00013 00011 "Italic letter i"
C00014 00012 "Italic letter j"
C00015 00013 "Italic letter k"
C00016 00014 "Italic letter l"
C00017 00015 "Italic letter m"
C00018 00016 "Italic letter n"
C00019 00017 "Italic letter o"
C00020 00018 "Italic letter p"
C00021 00019 "Italic letter q"
C00023 00020 "Italic letter r"
C00024 00021 "Italic letter s"
C00025 00022 "Italic letter t"
C00026 00023 "Italic letter u"
C00027 00024 "Italic letter v"
C00028 00025 "Italic letter w"
C00029 00026 "Italic letter x"
C00031 00027 "Italic letter y"
C00032 00028 "Italic letter z"
C00034 ENDMK
C⊗;
% This lower-case italic alphabet was prepared by D. E. Knuth in December, 1979,
% inspired by the Monotype alphabet used in {\sl The Art of Computer Programming}.
% Math spacing is obtained by setting $\\{mi}=1$, otherwise set $\\{mi}=0$.
% Character codes \¬141--\¬172 are generated.
new mc,lbowl,lhook,rbowl,rhook,rstem; % quantities used in spacing corrections
mc=mi/pu;
rhook=1/3px.slant+.5pw+.5pu;
lbowl=.3px.slant-.5pwii+pu;
rbowl=.7px.slant+.5pwii-pu;
lhook=2/3px.slant-.5pw-.5pu;
rstem=px.slant+.5pwi-pu;
"Italic letter a";
call charbegin(`a,9,mc.lbowl,-mc.rhook,px,0,mi[rhook,0]);
cpen; x1=.5[x2,x3]; x2=good2 1.5u; x3=x4=x5=good1(r-2.5u);
top6y1=m+oo; bot6y2=-oo; y3=y2; top1y4=m-.01h;
call `a darc(1,2,w2); call `b darc(1,3,w0); % bowl
w1 draw 4; % make end point round
call `c exit(5,r); % closing hook
hpen; w1 draw 4..5. % stem
"Italic letter b";
call charbegin(`b,8,mc.lbowl,-mc(rbowl-.5pu),ph,0,mi[rbowl,0]);
hpen; x1=x2=good1 1.5u; x5=good2(r-1.5u); x3=x4=.5[x2,x5];
top1y1=h; y2=.5[y3,y4]; top0y3=m+oo; bot0y4=-oo; y5=y4;
call `a sserif(1,1,2,-lcs); % serif
w1 draw 1..2; % stem
call `b arc(3,2,w0); call `c arc(4,2,w1); % left part of bowl
call `d darc(3,5,w2). % right part of bowl
"Italic letter c";
call charbegin(`c,8,mc.lbowl,-1/3mc.px.slant,px,0,mi[px.slant-pu,0]);
hpen; rt3x1=rt0x2=round(r-1.5u); x3=x5=.5(r+u); x4=good2 1.5u;
rt0x6=r-.5u; top0y6=.5e; x7=x6; y7=e;
y1=y2=.5[e,m]; top0y3=m+oo; bot0y4=-oo; y5=y4;
w0 draw 2{0,1}..3{-1,0}; % shoulder
call `a darc(3,4,w2); % bowl
w0 draw 5{1,0}..6(..7); % point
cpen; w3 draw 1. % bulb
"Italic letter d";
call max(ph.slant+.5pwi-2pu,rhook);
call charbegin(`d,9,mc.lbowl,mc(.5pu-acc),ph,0,mi[acc,0]);
hpen; x1=.5[x2,x3]; x2=good2 1.5u; x3=x4=x5=good1(r-2.5u);
top1y4=h; top0y1=m+oo; bot0y2=-oo; y3=y2;
call `b darc(1,2,w2); call `c darc(1,3,w0); % bowl
call `d exit(5,r); % closing hook
call `a sserif(4,1,5,-lcs); % serif
w1 draw 4..5. % stem
"Italic letter e";
call charbegin(`e,8,mc.lbowl,-1/3mc.px.slant,px,0,mi[px.slant-pu,0]);
hpen; rt11x1=round(r-1.5u); x2=good2 1.5u;
x3=x4=.5(r+u); rt0x5=r-.5u; x6=x5; x7=rt2x2;
y1=.5[y2,y3]; y2=e; top0y3=m+oo; bot0y4=-oo; top0y5=.5e; y6=y7=e;
w11 draw 2..7{1,0}..1{0,1}..3{-1,0}; % bar and shoulder
call `a arc(3,2,w2); call `b arc(4,2,w2); % bowl
draw 4{1,0}..5(..6). % point
"Italic letter f";
call charbegin(`f,7,1-fixwidth-mc(pd.slant+pu),
1-fixwidth-mc(px.slant),ph,pd,ph.slant+.75pu-mi.px.slant);
cpen; lft3x1=lft0x2=round .75u; rt3x3=rt0x4=round(r-.75u);
x5=r-2.5u; x8=2.5u;
x90=.5r-.5u; x91=.5r+.5u; y90=y5; y91=y8; % (the line of slant will be $90\to91$)
bot3y1=-.85d; y2=y1; y3=y4; y5-y3=y2-y8;
top6y5=h+oo; y6=.25[m,h]; y7=e; bot6y8=-d-oo;
new aa,bb; y6=aa[y90,y91]; x6=aa[x90,x91]; x7=bb[x90,x91]; y7=bb[y90,y91];
x9=lft1x6-1.5u-eps; x10=rt1x6+1.5u+eps; top6y9=m; y9=y10;
x20=.8[x5+x6-x90,x90]; y20=.8[y6,y90]; x21=.8[x8+x7-x91,x91]; y21=.8[y7,y91];
w3 draw 1; draw 3; % bulbs
hpen; w0 draw 9..10; % bar
minvr 0; minvs 0;
draw |w0|4{0,1}..|w0#|5{-1,0}..|.5[w0,w1]|20{x6-x5,y6-y5}..
|w1#|6{x91-x90,y91-y90}..|w1#|7{x91-x90,y91-y90}..
|.5[w0,w1]|21{x8-x7,y8-y7}..|w0#|8{-1,0}..2{0,1}; % stem
minvr .5; minvs .5.
"Italic letter g";
call max(-lbowl,pd.slant-1.5pu);
call charbegin(`g,8,-mc.acc,-mc(rstem-1/3px.slant),px,pd,
mi[rstem,1/3px.slant]);
cpen; x1=x6=.5r; x2=good2 1.5u; x3=x4=x5=good1(r-1.5u);
lft3x8=lft0x7=round 2u;
top6y1=m+oo; bot6y2=-oo; y3=y2; top1y4=m-.01h; y5=-1/3d;
bot6y6=-d-oo; bot3y7=-.9d; y8=y7;
w3 draw 8; % bulb
w1 draw 4; % make end point round
call `a darc(1,2,w2); % left part of bowl
call `b darc(1,3,w0); % right part of bowl
hpen; draw |w1|4..|w1#|5{0,-1}..|w0#|6{-1,0}..7{0,1}. % stem and tail
"Italic letter h";
call charbegin(`h,9,0,-mc.rhook,ph,0,mi[rhook,0]);
cpen; x1=x2=good1 1.5u; x3=good1(r-2.5u); x4=x3-.25u;
top6y1=h; bot1y2=-oo;
w1 draw 2; % make end point round
call `a sserif(1,1,2,-lcs); % serif
hpen; w1 draw 1..2; % stem
call `b italhstroke(2,3); % stroke
call `c skewexit(4,r); % closing hook
draw 3{0,-1}..4{-u,-m}. % link
"Italic letter i";
call max(rhook,ph.slant+.5pwiii-2pu);
call charbegin(`i,7,1-fixwidth+mc.lhook,1-fixwidth-mc.acc,ph,0,mi[acc,0]);
x1=.5r+.25u; x2=.5r-.25u;
call `a skewentry(u,1); % opening hook
call `b skewexit(2,r-u); % closing hook
hpen; w1 draw 1..2; % stem
cpen; top3y3=h; x3=.5r; w3 draw 3. % dot
"Italic letter j";
call charbegin(`j,7.5,1-fixwidth-mc(pd.slant),
1-fixwidth-mc(pe.slant+.5pwi-1.5pu),ph,pd,
mi[ph.slant+.5pwi-1.5pu,(ph-pe).slant]);
cpen; lft3x1=lft0x2=round .5u; x3=2.5u; x4=x5=good1 4.5u; rt3x6=rt1x5;
top3y6=h; bot3y1=-.9d; y2=y1; bot6y3=-d-oo; bot6y4=-1/3d;
w3 draw 1; % bulb
draw 6; % dot
call `a entry(u,5); % opening hook
hpen; draw |w1|5..|w1#|4{0,-1}..|w0#|3{-1,0}..2{0,1}. % stem and tail
"Italic letter k";
call charbegin(`k,8,0,-mc.rhook,ph,0,mi[px.slant,px.slant-rhook]);
cpen; x1=x2=x3=good1 1.5u; x4=r-1.5u;
rt3x6=rt0x5=round(r-.5u); x7=good1(r-2.75u);
x8=r-1.25u; x9=good0r;
top6y1=h; bot1y2=-oo; y3=good0e; top6y4=m+oo; y5=y6=2/3[e,m];
y7=.5e; bot6y8=-oo; y9=1/3m;
w1 draw 2; % make end point round
w3 draw 6; % bulb
call `a sserif(1,1,2,-lcs); % serif
hpen; w1 draw 1..2; % stem
w0 draw 3{1,0}..4{1,0}..5{0,-1}; % upper diagonal
draw |w0#|3{1,0}..|w1#|7{0,-1}..
|w0#|8{1,0}..9{0,1}. % lower diagonal and closing hook
"Italic letter l";
call max(rhook,ph.slant+.5pwi-2pu);
call charbegin(`l,6,1-fixwidth+.5mi,1-fixwidth-mc.rhook-.5mi,ph,0,acc-mi.rhook);
hpen; x1=x2=good1 2.5u; top1y1=h;
call `a exit(2,r-u); % closing hook
call `b sserif(1,1,2,-lcs); % serif
w1 draw 1..2. % stem
"Italic letter m";
call charbegin(`m,15,mc.lhook,-mc.rhook,px,0,mi[rhook,0]);
cpen; x1=x2=good1 2.5u; x3=x4=good1 .5r; x5-x3=x3-x1; x6=x5-.25u;
bot1y2=-oo; y4=y2; w1 draw 2; draw 4; % make end points round
call `a entry(0,1); % opening hook
hpen; w1 draw 1..2; % left stem
call `b italhstroke(2,3); % left stroke
draw 3..4; % middle stem
call `c italhstroke(4,5); % right stroke
call `d skewexit(6,r); % closing hook
draw 5{0,-1}..6{-u,-m}. % right stem
"Italic letter n";
call charbegin(`n,10,mc.lhook,-mc.rhook,px,0,mi[rhook,0]);
cpen; x1=x2=good1 2.5u; x5=good1(r-2.5u); x6=x5-.25u;
bot1y2=-oo; w1 draw 2; % make end point round
call `a entry(0,1); % opening hook
hpen; w1 draw 1..2; % left stem
call `b italhstroke(2,5); % stroke
call `c skewexit(6,r); % closing hook
draw 5{0,-1}..6{-u,-m}. % right stem
"Italic letter o";
call charbegin(`o,9,mc.lbowl,-mc(rbowl-.5pu),px,0,mi[rbowl,0]);
hpen; x1=r-x1; % axis of left-right symmetry
x2=good2 1.5u;
x1-x2=x3-x1; top0y1=m+oo; bot0y2=-oo; y2=y3;
call `a darc(1,2,w2); % left part of bowl
call `b darc(1,3,w2). % right part of bowl
"Italic letter p";
call max(-lhook,pd.slant+.5pwi-2pu);
call charbegin(`p,9,-mc.acc,-mc(rbowl-.5pu),px,pd,mi[rbowl,0]);
x1=x2=x4=good1 2.5u; x3=.5[x4,x5]; x5=good2(r-1.5u);
hpen; bot1y2=-d; top0y3=m+oo; bot0y4=-oo; y5=y4;
call `a entry(0,1); % opening hook
w1 draw 1..2; % stem
call `b serif(2,1,1,-.5lcs); call `c serif(2,1,1,lcs); % serif
call `d darc(3,4,w0); % left part of bowl
call `e darc(3,5,w2). % right part of bowl
"Italic letter q";
call charbegin(`q,10,mc.lbowl,1-fixwidth-mc(rstem-1/3px.slant),
px,pd,mi[rstem,1/3px.slant]);
hpen; x1=good1(r-2.5u); x5=.5(r-u); x2=x1=x4; bot1y1=-d;
rt0x7=rt1x1; x3=x7; x5=x6; lft0x8=lft1x2;
top0y3=m; y4=.5[y5,y6]; top0y5=m+oo; bot0y6=-oo;
new aa; lft1x2=aa[x6,x4];
y2=y7=y8=(sqrt(1-aa.aa))[y4,y5]; % where bowl meets stem
if lcs≠0: call `a serif(1,1,2,-lcs);
call `b serif(1,1,2,lcs); % lower serif
fi;
w1 draw 1..2; % stem
w0 ddraw 7..3, 8{0,1}..3{x3-x8,.5(y3-y8)}; % spur
w0 draw 6{1,0}..4{0,1}..5{-1,0}; % right part of bowl
if w2>1.5u: lft2x9=round .75u;
else: x9=good2 1.5u;
fi;
y9=y6; call `c darc(5,9,w2). % left part of bowl
"Italic letter r";
call charbegin(`r,7,mc.lhook,-mc(px.slant-.75pu),
px,0,mi[px.slant-.25pu,.5pu]);
cpen; x1=x2=good1 2.5u; x3=r-2u; rt3x5=rt0x4=round(r-.75u);
bot1y2=-oo; top6y3=m+oo; y4=y5=2/3[e,m];
w1 draw 2; % make end point round
w3 draw 5; % bulb
call `a entry(0,1); % opening hook
hpen; w1 draw 1..2; % stem
w0 draw 2{0,1}..3{1,0}..4{0,-1}. % stroke
"Italic letter s";
call charbegin(`s,7,0,-mc(px.slant-.5pu),px,0,mi[px.slant-.5pu,0]);
cpen; rt2x1=rt0x2=round(r-u); x3=3u; lft11x4=round u;
x5=.5r; rt11x6=round(r-.5u); x7=r-3u; lft0x8=lft3x9=round .5u;
y1=y2=.5[e,m]; top6y3=m+oo; bot6y7=-oo; y8=y9=.5e;
(y5-w6-.5w8)/(m+o-2w6-w8)=e/m; % white space ratio
w2 draw 1; w3 draw 9; % bulbs
hpen; w0 draw 2{0,1}..3{-1,0}; draw 8{0,-1}..7{1,0}; % links
new aa;
if m-e>e: aa=m-e;
else: aa=e;
fi;
call `a sdraw(3,4,5,6,7,w11,w8,-aa/(18u)). % stroke
"Italic letter t";
cpen; call max(rhook,px.slant-.5pu+.5pw);
if px-pe<.75(ph-px): top1y1=2m-e;
call charbegin(`t,7.5,1-fixwidth+mc(px.slant-pu-.5pw),
1-fixwidth-mc.acc,2px-pe,0,mi[acc,0]);
else: top1y1=.75[m,h];
call charbegin(`t,7.5,1-fixwidth+mc(px.slant-pu-.5pw),
1-fixwidth-mc.acc,.75[px,ph],0,mi[acc,0]);
fi;
x1=x2=good1 3u; x3=x1-2.5u-eps; x4=x1+2.5u+eps;
w1 draw 1; % make end point round
top0y3=m; y4=y3; w0 draw 3..4; % bar
call `a exit(2,r-u); % closing hook
hpen; w1 draw 1..2. % stem
"Italic letter u";
call charbegin(`u,9.5,mc.lhook,-mc.rhook,px,0,mi[rhook,0]);
cpen; x1-.25u=x2=good1 2.5u; x3=x2+.5u; x4=.5[x2,x5];
x5=x6=x7=good1(r-2.5u);
y2=.7e; y3=.25[y4,e]; bot6y4=-oo; y5=e; top1y6=m;
w1 draw 6; % make end point round
call `a skewentry(0,1); % opening hook
hpen; draw |w1|1{-u,-m}..|w1#|2{0,-1}..|.75[w0,w1]|3..
|w0#|4{1,0}..5{0,1}; % stroke
call `b exit(7,r); % closing hook
w1 draw 6..7. % stem
"Italic letter v";
call charbegin(`v,8,mc.lhook,-2/3mc.px.slant,px,0,mi[px.slant,1/3px.slant]);
x2=good1 2.5u; x1=x2+.25u; x3=x2+.5u;
call `a skewentry(0,1); % opening hook
hpen; y2=.7[y4,e]; y3=.25[y4,e]; bot0y4=-oo; x4=5u;
rt0x5=round(r-.5u); y5=e;
draw |w1|1{-u,-m}..|w1#|2{0,-1}..|.75[w0,w1]|3..
|w0#|4{1,0}..5{0,1}; % stroke
call `b endv(5). % closing bulb
"Italic letter w";
call charbegin(`w,12,mc.lhook,-2/3mc.px.slant,px,0,mi[px.slant,1/3px.slant]);
cpen; x1-.25u=x2=good1 2.5u; x3=x2+.5u; x4=.6[x2,x5];
x5=x6=x7=good1 6.75u; x8=x7+.5u; x9=r-2.75u; rt0x10=round(r-.5u);
y2=.7e; y3=.25[y4,e]; bot6y4=-oo; y5=e; top1y6=m;
w1 draw 6; % make end point round
y7=y2; y8=y3; y9=y4; y10=y5;
call `a skewentry(0,1); % opening hook
hpen; draw |w1|1{-u,-m}..|w1#|2{0,-1}..|.75[w0,w1]|3..
|w0#|4{1,0}..5{0,1}; % left stroke
draw |w1|6..|w1#|7{0,-1}..|.75[w0,w1]|8..|w0#|9{1,0}..10{0,1}; % right stroke
call `b endv(10). % closing hook
"Italic letter x";
if px.slant>rhook: call charbegin(`x,8,0,-mc.px.slant,px,0,mi[px.slant,0]);
else: call charbegin(`x,8,mc.lhook,-mc.rhook,px,0,mi[rhook,0]);
fi;
cpen; x1=x2=good1 .5r; lft1x2=lft0x3; x4=2u; lft0x5=lft3x6=round .5u;
rt1x1=rt0x7; x8=r-2u; rt0x9=rt3x10=round(r-.5u);
y1=2/3m; y2=1/3m; y3=1/4m; bot6y4=-oo; y5=y6; y7=3/4m; top6y8=m+oo; y9=y10;
y8-y9=y5-y4; y9=2/3[e,m];
x21=good0 0; y21=2/3m; x22=.5[x21,x1]; top6y22=m+oo;
x31=good0 r; y31=1/3m; x32=.5[x31,x2]; bot6y32=-oo;
x17=x7; x13=x3; y17=y13=.5m;
w3 draw 6; draw 10; % bulbs
hpen; w0 draw 21{0,1}..22{1,0}; call `a arc(22,1,w1); % opening hook
draw 31{0,-1}..32{-1,0}; call `b arc(32,2,w1); % closing hook
draw 13..3{0,-1}..4{-1,0}..5{0,1}; % lower left link
draw 17..7{0,1}..8{1,0}..9{0,-1}; % upper right link
w1 draw 1..2. % stem
"Italic letter y";
call charbegin(`y,8.5,mc.lhook,-mc(rstem-1/3px.slant),
px,pd,mi[rstem,1/3px.slant]);
cpen; x1-.25u=x2=good1 2.5u; x3=x2+.5u; x4=.5[x2,x5];
x5=x6=x7=good1(r-1.5u); x8=.5r; lft0x9=lft3x10=round 2u;
y2=.7e; y3=.25[y4,e]; bot6y4=-oo; y5=e; top1y6=m;
w1 draw 6; % make end point round
y7=0; bot6y8=-d-oo; y9=y10; bot3y10=-.75d; w3 draw 10; % bulb
call `a skewentry(0,1); % opening hook
hpen; draw |w1|1{-u,-m}..|w1#|2{0,-1}..|.75[w0,w1]|3..
|w0#|4{1,0}..5{0,1}; % stroke
w1 draw 6..7; % stem
call `b arc(8,7,w1); % tail
w0 draw 8{-1,0}..9{0,1}. % link
"Italic letter z";
call charbegin(`z,7,0,-mc.rhook,px,0,px.slant+.5pw-mi.rhook);
vpen; x1=good0 u; x2=x4=2.5u; x5=5u;
x6=good0 r; x7=x9=5u; x10=2.5u;
x11=x12=good0(r-.5u); x13=x14=x1;
y1=.75m; top6y2=top8y3=m+oo; bot8y3=bot6y4; y5=.825m;
y6=1/3m; bot6y7=bot8y8=-oo; top8y8=top6y9; y10=.175m;
y11=y2; y12=y11+(h+b-m); y13=y7; y14=y13-(h+b-m);
w6 ddraw 1{0,1}..2{1,0}..5{1,0}, 1{0,1}..4{1,0}..5{1,0}; % upper bar
ddraw 10{1,0}..9{1,0}..6{0,1}, 10{1,0}..7{1,0}..6{0,1}; % lower bar
draw 5{1,0}..11(..12); draw (14..)13..10{1,0}; % links
draw 11{x13-x11,2(y13-y11)}..13{x13-x11,2(y13-y11)}. % diagonal